import { login, logout } from '@/api/user'
import { Message } from 'element-ui'
import { getToken, setToken, removeToken } from '@/utils/auth'

const state = {
  token: getToken() // 设置token为共享状态 初始化vuex的时候 就先从缓存中读取，
}

const mutations = {
  // 设置token
  setToken(state, token) {
    state.token = token // 设置token  只是修改state的数据
    // vuex变化 => 缓存数据
    setToken(token) // vuex和 缓存数据的同步
  },
  // 删除缓存
  removeToken(state) {
    state.token = null // 删除vuex的token
    removeToken() // 先清除 vuex  再清除缓存 vuex和 缓存数据的同步
  }
}

const actions = {
  // user login
  async login(context, data) {
    const res = await login(data) // 实际上就是一个promise  result就是执行的结果
    if (res.code !== 2000) {
      Message.error(res.msg)
    }
    Message.success(res.msg)
    // axios默认给数据加了一层data
    context.commit('setToken', res.data.name)// 重新设置token
    window.localStorage.setItem('u_name', res.data.name)
  },
  async logout(context, params) {
    const res = await logout({
      u_name: params
    })
    if (res.code !== 2000) {
      Message.error(res.msg)
    }
    Message.success(res.msg)
    context.commit('removeToken')
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

